package com.ruiben.mall.utils;

import javax.net.ssl.HttpsURLConnection;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URL;

public class WXPayRequest {

    /**
     * post请求并得到返回结果,统一下单接口
     *
     * @param requestUrl
     * @param requestMethod
     * @param output
     * @return
     */
    public static String httpsRequest(String requestUrl, String requestMethod, String output) {
        try {
            URL url = new URL(requestUrl);
            //打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream
            HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
            //如果打算使用 URL 连接进行输出，则将 DoOutput 标志设置为 true
            connection.setDoOutput(true);
            //打算使用 URL 连接进行输入，则将 DoInput 标志设置为 true
            connection.setDoInput(true);
         /*
          * 有些协议用于文档缓存。有时候能够进行“直通”并忽略缓存尤其重要，
          * 例如浏览器中的“重新加载”按钮。如果连接中的 UseCaches 标志为 true，
          * 则允许连接使用任何可用的缓存。如果为 false，则忽略缓存。
          * 默认值来自 DefaultUseCaches，它默认为 true。
          */
            connection.setUseCaches(false);
            //设置 URL 请求的方法，
            connection.setRequestMethod(requestMethod);
            if (null != output) {
                OutputStream outputStream = connection.getOutputStream();
                outputStream.write(output.getBytes("UTF-8"));
                outputStream.close();
            }
            // 从输入流读取返回内容
            InputStream inputStream = connection.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String str = null;
            StringBuffer buffer = new StringBuffer();
            while ((str = bufferedReader.readLine()) != null) {
                buffer.append(str);
            }
            bufferedReader.close();
            inputStreamReader.close();
            inputStream.close();
            inputStream = null;
            //指示近期服务器不太可能有其他请求。调用 disconnect() 并不意味着可以对其他请求重用此 HttpURLConnection 实例。
            connection.disconnect();
            return buffer.toString();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return "";
    }

}